This invention relates generally to the field of data processing and more particularly to a method and system for updating read-only software in a computing system.
Many conventional systems have mechanisms for executing software modules that are bundled in a read-only device such as a read-only memory (ROM). The software modules within the read-only device may be software applications, such as word processing software, or may be shared software libraries that are used by the applications during execution. For example, a read-only device may contain dynamically linked libraries (DLL""s) that are shared by the software applications stored within the read-only device.
Speed and memory efficiencies can be achieved by executing the software applications and the libraries directly from the read-only device and not requiring that they be first loaded into random access memory (RAM). One problem with this approach is that in order to make even a small modification to one of the software modules the entire read-only device must be reprogrammed or replaced.
For these reasons, and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for a mechanism by which read-only software modules can be updated without requiring that the read-only device be reprogrammed or replaced. Furthermore, there is a need for a mechanism by which read-only software modules can be updated dynamically at the time of execution.
The invention provides a mechanism by which software modules executing from a read-only device may be updated to use newer versions of other software modules without requiring that the device be reprogrammed or replaced. The invention advantageously allows software modules to be primarily executed directly from the read-only device while only a small updated portion is executed from read/write device. The software modules may be stand-alone software applications or shared software libraries.
According to one aspect, the invention is a method of executing a software module on a computing system. A portion of the software module is loaded from a read-only device into a read/write device. The loaded portion of the software module is executed directly from the read/write device while a remainder of the software module is executed from the read-only device. In one embodiment virtual memory is allocated for both the portion of the software module loaded within the read/write device and for the remainder of the software module within the read-only device. The loaded portion of the software module is modified to correctly address the newer software modules. Much of the software module is executed directly from the read-only device while just the modified portion is executed from the read/write device.
According to another aspect, the invention is a computing system having a read-only device that contains a first portion of a software module. A read/write device contains a second portion of the software module. An operating system executes the software module by executing the first and second portions of the software module from their corresponding devices.